Skip to content

fix(desktop): localize the native file and save dialog titles - #5179

Merged
Astro-Han merged 1 commit into
apache:mainfrom
orangeCatDeveloper:fix/native-file-dialog-copy
Sep 12, 2026
Merged

fix(desktop): localize the native file and save dialog titles#5179
Astro-Han merged 1 commit into
apache:mainfrom
orangeCatDeveloper:fix/native-file-dialog-copy

Conversation

@orangeCatDeveloper

Copy link
Copy Markdown
Contributor

Summary

The native open and save panels carried English titles in every locale. A zh user picking a reference folder, adding attachments, importing a Skill or a pet, or saving a conversation read the one English string on an otherwise translated screen. All Files was the worst of the set: the file-type dropdown lists it directly beside the OS's own localized entries, so the panel reads half-translated.

Seven strings move into native-file-dialog-copy.ts, a typed UiCatalog beside the existing project-picker-copy.ts. Two call sites (markdown-save-ipc-main.ts, pet-pack-import.ts) and runtime-host-skills-ipc-main.ts gain a resolveLocale dependency, the form createPermissionOverlayMain already uses; the lower-level markdown-save-main.ts still takes a plain string, so nothing below the IPC boundary starts depending on a catalog.

Format names stay in English on purpose: Markdown, Skill Markdown and PNG and JPEG identify a file format, not a product concept, and translating them would add noise rather than clarity.

This also deletes runtime-host-boot-copy.ts — 90 lines of trilingual catalog whose only importer was its own test. The live copy for that surface is native-diagnostic-dialog-copy.ts.

Refs #2672

Verification

apps/desktop full dist suite        2463 pass / 5 fail
apps/desktop typecheck (4)          0 errors
check-locale-hygiene                passed
npm run format:check                clean

The five failures are browser-message-box, red on the unmodified base (7 tests, 5 fail), unrelated to this diff.

The new test asserts every key differs from its English value and carries Han text in both Chinese locales, so a forgotten translation fails rather than silently shipping English.

Review focus

dialog.title is honoured on Windows and Linux; macOS does not render it on the native panel. The change is still correct there — All Files appears in the file-type dropdown on all three platforms — but a macOS screenshot would not show the titles.

main.ts's showErrorBox('Maka Dev', …) is deliberately untouched: it is the catch-path fallback for a development-only single-instance dialog whose main path already resolves the system locale through DEV_SINGLETON_COPY.

AI use

Select exactly one:

  • No generative tool made a substantive contribution
  • Generative tooling made a substantive contribution

Tool(s) and scope: Claude Code — located the untranslated sites, wrote the catalog and the locale plumbing, the test, and this description. The zh-CN/zh-TW wording and the decision to leave format names in English were the contributor's. The commit carries a Generated-by: Claude Code trailer.

Checklist

  • Tests cover the change and fail without it
  • Lint, format, typecheck and the affected suites pass locally

Does this PR entail a change in behavior?

  • Yes — six dialog titles and the All Files filter label now follow the Desktop locale
  • No

The open and save panels carried English titles in every locale, so a zh
user picking a reference folder or saving a conversation read the one
English string on an otherwise translated screen. `All Files` was the
worst of them: the panel lists it beside the OS's own localized entries.

Format names (`Markdown`, `Skill Markdown`, `PNG and JPEG`) stay in
English — they identify a file format rather than a product concept.

Deletes runtime-host-boot-copy.ts, whose only importer was its own test.

Generated-by: Claude Code
@github-actions github-actions Bot added the effort/M Under 500 readable lines label Sep 11, 2026
@orangeCatDeveloper
orangeCatDeveloper marked this pull request as ready for review September 11, 2026 04:55

@me2seeks me2seeks left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

PR 5179 Review

结论

APPROVE
七个 native 对话框标题/过滤器名移入带类型的 nativeFileDialogCopy 目录,三个 register 函数获得与 createPermissionOverlayMain 同形的 resolveLocale 依赖;删除的 runtime-host-boot-copy.ts 确无生产引用。

@Astro-Han
Astro-Han merged commit c1d5025 into apache:main Sep 12, 2026
3 checks passed
@orangeCatDeveloper
orangeCatDeveloper deleted the fix/native-file-dialog-copy branch September 12, 2026 19:00
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

effort/M Under 500 readable lines

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants